package org.monster.context.core.file;

import java.util.Date;
import java.util.Timer;

/**
 * 文件安排器
 *
 * @author Monster
 */
public class FileScheduler {

    /**
     * 时间者
     */
    private final Timer timer;

    /**
     * 设置 时间者
     *
     * @return 时间者
     */
    public FileScheduler(Timer timer) {
        this.timer = timer;
    }

    /**
     * 构造方法
     */
    public FileScheduler() {
        this.timer = new Timer();
    }

    /**
     * 获取 时间者
     *
     * @return 时间者
     */
    public Timer getTimer() {
        return timer;
    }

    /**
     * 安排
     *
     * @param task 任务
     * @param step 时间阶梯
     */
    public void schedule(Runnable task, TimeStep step) {
        Date time = step.getNextTime();
        FileSchedulerTimer timeTask = new FileSchedulerTimer(task, step, this);
        timer.schedule(timeTask, time);
    }

    /**
     * 停止安排
     */
    public void stopSchedule() {
        timer.cancel();
    }

}
